This invention is directed to a programming interface for developing and running network management application programs written in an object-oriented language having object class definitions, on a network communication infrastructure wherein the application programs manipulate managed objects that are specified according to the GDMO/ASN.1 ISO standards and are made available at remote management agents through the communication infrastructure. Beyond this it relates to methods for mapping from Guidelines for Definition of Managed Objects (GDMO) templates and Abstract Syntax Notation One (ASN.1) defined types into the C++ language and a platform for the implementation of the interface.
OSI network management applications and CCITT Telecommunication Management Network (TMN) applications are based on the ability to manipulate managed objects which are specified in GDMO/ASN.1 and which are made available at remote management agents through a communication infrastructure.
Currently, XMP/XOM from the X/Open [X/Open XMP] is the only standardized API to the communication infrastructure for management applications. XMP/XOM is cumbersome to use. XMP/XOM based applications are lengthy and difficult to write, understand and debug. Furthermore XMP/XOM does not allow for static (compile time) type checking, so that many type errors show up at run-time. Therefore most programmers certify that using XMP/XOM is cumbersome and time consuming. Implementers of network management applications are thus confronted with the user unfriendliness of the XMP/XOM interface.
In order to promote code quality and reusability more and more applications are written in the object-oriented programming language C++. Even though management information is defined in the object-oriented specification language GDMO, XMP/XOM uses the C language.
Further, managed objects are formally specified in GDMO and ASN.1. Development tools that support GDMO and ASN.1 can, thus drastically reduce the development time of network management applications. Therefore a demand for a C++ embedding to hide the intricacies of XMP/XOM and GDMO based tools to support the development of OSI management applications is ascertainable.
The development of applications within the OSI management framework [ISO 10040] is a rather complex undertaking. The estimated costs for the development of new applications support this perception. In order to boost the development process, additional support by higher-level interface and corresponding tools is required.
It is therefore an objective of the invention to develop an object-oriented interface (OOI) which provides an, object-oriented abstraction of OSI management information and services for use in regular, non-distributed applications.
A further objective of the invention is to provide an OOI for access to managed objects which is simple to use.
Further objectives of the invention are to relieve the application programmers from most technical details related to communication and XMP/XOM, to provide an object-oriented, strong typed language embedding of management information and management services into C++, to generate automatically methods to manipulate specified managed objects, and to be open to future management paradigms or communication infrastructures, such as OSF-DME.
The requirements for the OOI design thus can be summarized as follows:
1. relieve the application programmers from most technical details related to communication and XMP/XOM;
2. provide an object-oriented, strong typed language embedding of management information and management services into C++;
3. automatically generate methods to manipulate specified managed objects; and
4. be open to future management paradigms or communication infrastructures, such as OSF-DME.
These problems are solved by the features of the invention laid down in the independent claims. The programming interface (OOI) according to the invention provides access to managed objects via telecommunication networks. The Object Interface Composer (OIC) automatically generates C++ class definition and implementation files based on managed object specifications written in GDMO and
ASN.1 and thus increases the efficiency of program developers. Using the OOI, a network management application can access managed objects stored at remote agents through methods of those generated classes.
The intricacies of XMP/XOM are hidden from the application programmer by C++ classes. As a result application programmers can concentrate on writing their application instead of having to deal with communication protocols or low level interfaces to the communication stack. The OOI hides the intricacies of the communication infrastructure and particularly that of XMP/XOM behind a programmer-friendly object-oriented C++ operator interface.
As opposed to XMP/XOM based code, OOI based code is concise and readable. The OIC may also comprise means for minimizing the number of generated classes and the number of objects to be handled by an application at run time, i.e., the OIC generates C++ classes for the relevant GDMO templates only. The OOI therefore drastically simplifies the development of management applications by hiding the XMP API below C++ objects.
Furthermore the full embedding of managed objects into C++ allows for strong type checking at compile time, whereas cumbersome debugging is usually necessary for XMP/XOM based applications. Without the OOI, programmers either use the cryptic and C-oriented XMP/XOM API or develop some kind of OOI on their own. Such ad hoc solutions take time to develop and usually lack the support of a source code generator similar to the OIC so that the managed object specification must be manually translated. Those solutions are of course time consuming and error prone. With the OOI, the additional development effort and the weaknesses of ad hoc solutions can be avoided. The OOI Run Time System provides C++ classes which allow convenient access to the Common Management Information Service (CMIS).
Both, the object-oriented interface (OOI) for use in OSI management applications and the related Object Interface Composer (OIC), minimize the effort needed to build the communication related functions of management applications.
An application written on top of the OOI is independent of the management service provider. The current version of the OOI is based on the XMP/XOM [XMP] service, but future versions of the OOI could use a different communication vehicle such as OSF-DME. The application could be ported to a new service provider with minimal effort. The OOI API does not depend upon XMP/XOM so that applications do not need to be rewritten when the OOI is ported to another communication infrastructure.
Preferred embodiments of the interface according to the invention are characterized in the claims. The OOI provides static type checking and is easy to use. The OSI definition of management information is object-oriented, thus the OOI takes advantage of object-oriented design techniques and provides a genuine object-oriented interface written in C++.
Managed objects (MO) are formally described in the GDMO/ASN.1 language. This allows for the automatic generation of MO specific source code. The Object Interface Composer (OIC) takes MO specifications that conform with GDMO/ASN.1 and generates C++ classes that provide methods to manipulate these objects. The OOI further provides methods to manipulate standardized MOs.
Strong typing is commonly defined as the compile time checking of type compatibility in programs; it is frequently used as co-notation of xe2x80x98static typingxe2x80x99. This means that a correctly compilable program in strong typed language, such as C++, will be guaranteed to be type safe. Type safeness means that variables have a defined type which completely specifies the value range and the permissible operations on the values of the type. Also, constants must be defined as specific values of certain types. This argument also applies to the type checking of parameters of procedures.
The net effect of strong typing is that the compiler will detect and prohibit the invocation of undefined methods on variables and illegal assignments of values of type X to variables of type Y. In this context, illegal means that no appropriate typecast has been defined explicitly.
With respect to object-oriented languages, strong typing is of even greater importance because in these languages it is common to define many application oriented types. In writing distributed applications, debugging is far more complicated than for local programs. Without strong typing, errors may be caused by unintended misuse of defined variables. Obviously, the avoidance of these errors saves debugging time.
Further, type safeness is essential for applications which will be installed in a wide range of network conditions. Using strong typing, the compiler is enabled to perform the compatibility checks for assignment, procedure parameters etc. If the compiler does not guarantee type-safe programs, the type safeness must be enforced at run-time by checking the type compatibility at the right locations in the program, which is by itself an error prone task. The execution time for these run-time checks may reach a non-trivial percentage and thus degrade the performance of the application.
The OOI supports strong, static typing for management applications which work with a known inventory of management information. In addition, the generic part of the OOI supports generic management applications. Finally, to allow the coexistence of generic and strong typed components within the same application, the OOI makes provision for using the same objects through the type-safe and the generic interface. This means that by using the OOI, objects will be allocated and used in a strong-typed manner as long as their types are known at compile time. In addition, objects of types which are unknown at compile time, may be allocated and used via the xe2x80x98weakxe2x80x99 typed interfaces.
The invention is also related to methods for mapping GDMO templates and ASN.1 types into C++ classes. These objects of the invention and the programming interface itself will become clear with regard to preferred embodiments of the invention which are illustrated by the appended drawings.